/**
 * This file is part of 1genia trampoline
 * Copyright (C) 2007-2008 1genia (contact@1genia.com)
 *
 * This library is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; version 3 of the License. 
 *
 * This library is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details. 
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; see the file COPYING.TXT.  If not,
 * write to the Free Software Foundation, Inc., 51 Franklin Street,
 * Fifth Floor, Boston, MA 02110-1301, USA. 
 **/
package com.genia.toolbox.projects.csv.bean.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.util.StringUtils;

import com.genia.toolbox.basics.exception.BundledException;
import com.genia.toolbox.projects.csv.bean.ActionVisitor;
import com.genia.toolbox.projects.csv.bean.MutableExecuteAction;

/**
 * implementation of {@link MutableExecuteAction}.
 */
public class ExecuteActionImpl
    extends AbstractActionImpl
    implements MutableExecuteAction
{

  /**
   * the object to execute the action on.
   */
  private String object;

  /**
   * the method to call.
   */
  private String method;

  /**
   * the arguments of the method.
   */
  private List<String> arguments = new ArrayList<String>();



  /**
   * add a new argument.
   * 
   * @param argument
   *          the argument to add
   */
  public void addArgument(String argument)
  {
    this.arguments.add(StringUtils.trimWhitespace(argument));
  }



  /**
   * getter for the arguments property.
   * 
   * @return the arguments
   */
  public List<String> getArguments()
  {
    return arguments;
  }



  /**
   * setter for the arguments property.
   * 
   * @param arguments
   *          the arguments to set
   */
  public void setArguments(List<String> arguments)
  {
    this.arguments = arguments;
  }



  /**
   * getter for the method property.
   * 
   * @return the method
   */
  public String getMethod()
  {
    return method;
  }



  /**
   * setter for the method property.
   * 
   * @param method
   *          the method to set
   */
  public void setMethod(String method)
  {
    this.method = StringUtils.trimWhitespace(method);
  }



  /**
   * getter for the object property.
   * 
   * @return the object
   */
  public String getObject()
  {
    return object;
  }



  /**
   * setter for the object property.
   * 
   * @param object
   *          the object to set
   */
  public void setObject(String object)
  {
    this.object = StringUtils.trimWhitespace(object);
  }



  /**
   * visit method.
   * 
   * @param visitor
   *          the visitor to use
   * @throws BundledException
   *           if an error occured
   * @see com.genia.toolbox.projects.csv.bean.Action#visit(com.genia.toolbox.projects.csv.bean.ActionVisitor)
   */
  public void visit(ActionVisitor visitor)
      throws BundledException
  {
    visitor.visitExecuteAction(this);
  }
}
